import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * la clase Spirit es la clase correspondiente a la nave enemiga lider la cual posee mas salud 
 * y sus balas pueden rastrear al heroe
 * 
 * @author (Octavio y Cesar) 
 * @version (2014.11.28)
 */
public class Spirit extends Enemy
{
    private  Guns gun;
    private Timer time;
    private int dir; 
    private int vel; 
    
    /**
     * constructor de variables de la clase spirit
     */
    public Spirit()
    {
        super(500,0);
        gun=new Guns();
        time=new Timer();
        dir=1;
        vel=3;
        GreenfootImage image=getImage();
        image.scale(100,100);
        setImage(image);
    }

    /**
     * Act - do whatever the Enemy3 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */

    public void act() 
    {
        this.changeDir();
        this.fly();
        this.shoot();
        super.checaVida();
        this.sumaPuntos();
    }   

    /**
     * metodo que checa la direccion en que debe de ir la nava spirit, al llegar a un extremo en el eje de las x 
     * cambia su posision a la contraria
     */
    public void changeDir()
    {
        switch(dir)
        {
            case 1:
            if(getX()+40>=getWorld().getWidth())
            {
                setLocation(getX()-vel,getY());
                dir=2;
            }
            break;
            case 2:
            if(getX()-70<=0)
            { 
                setLocation(getX()+vel,getY()); 
                dir=1;
            }
            break;

            default:

        }

    }
    /**
     * mueve la nave en el eje de las X dependiendo su direccion
     */
    public void fly()
    {

        switch(dir)
        {
            case 1: 
            setLocation(getX()+vel,getY()); 
            break;
            case 2:
            setLocation(getX()-vel,getY());  
            break;

            default:

        }

    }
    
    /**
     * este metodo crea balas que siguen la posision del heroe, estas se remueven despues de un tiempo
     * para evitar que sigan en el mundo despues de mucho y asi poder esquivarlas
     */
    public void shoot()
    {
        GreenfootSound bulletSound=new GreenfootSound("boom.wav");
        time.increases();
        if(time.getTime()==20)
        {
            Guns bullet;
            bullet= new EProton();
            GreenfootImage myImage=this.getImage();
            getWorld().addObject(bullet,this.getX(),this.getY()+myImage.getHeight());
            bulletSound.setVolume(30);
            bulletSound.play();
            time.reset();
        }

       
    }
    
    /**
     * checa la salud de esta nave, cuando llega a cero le suma una cantidad de puntos al heroe
     */
     public void sumaPuntos()
    {
        if(getHealth()<0)
         {
            ((Space)getWorld()).getHero().setPoints(500);
            (new GreenfootSound("exploPop.wav")).play();
            getWorld().removeObject(this);  
         }
    }

}
